﻿#region File and License Information
/*
<File>
	<License>
		Copyright © 2009 - 2017, Daniel Vaughan. All rights reserved.
		This file is part of Calcium (http://calciumsdk.net), 
		which is released under the MIT License.
		See file /Documentation/License.txt for details.
	</License>
	<CreationDate>2013-01-01 11:50:21Z</CreationDate>
</File>
*/
#endregion

using System;
using Outcoder.Net;

namespace Outcoder.Services
{
	/// <summary>
	/// This class allows you to monitor the status of the current network connection.
	/// When the connection changes an event is raised. In addition a <c>NetworkAvailabilityChangedMessage</c>
	/// is disptached using the <seealso cref="IMessenger"/> implementation if registered with the IoC container.
	/// </summary>
	public interface INetworkMonitoringService
	{
		bool Connected { get; }
		NetworkConnectionType NetworkConnectionType { get; }

		/// <summary>
		/// This event is raised on the UI thread when the connection changes. 
		/// In addition, when using the default implementation, a <c>NetworkAvailabilityChangedMessage</c>
		/// is disptached using the <seealso cref="IMessenger"/> implementation if registered with the IoC container.
		/// </summary>
		event EventHandler<EventArgs> NetworkConnectionChanged;

		bool ApproachingDataLimit { get; }
		bool Roaming { get; }

		bool LimitData { get; }

		void Update();

		string Ssid { get; }

#if __ANDROID__
		string IPAddress { get; }
#endif
	}
}